
/**
 * 处理bolb为base64格式
 * @param blob blob类型数据
 * @param success 回调函数
 */
export function blobToBase64(blob: Blob, success: Function) {
  const fileReader = new FileReader();
  fileReader.onload = (e) => {
    success(e.target?.result);
  };
  fileReader.readAsDataURL(blob);
}

/**
 * 
 * @param code base64类型字符串
 * @returns Blob
 */
export function base64ToBlob(code: string) {
  //Base64一行不能超过76字符，超过则添加回车换行符。因此需要把base64字段中的换行符，回车符给去掉，有时候因为存在需要把加号空格之类的换回来，取决于base64存取时的规则。
  code = code.replace(/[\n\r]/g, "");
  var raw = window.atob(code);
  let rawLength = raw.length;
  //转换成pdf.js能直接解析的Uint8Array类型
  let uInt8Array = new Uint8Array(rawLength);
  for (let i = 0; i < rawLength; ++i) {
    uInt8Array[i] = raw.charCodeAt(i);
  }
  console.log(uInt8Array, "uInt8ArrayuInt8Array");
  console.log(new Blob([uInt8Array]));
  return new Blob([uInt8Array]); //转成pdf类型
}

/**
 * 字节流转base64
 * @param data 
 * @param type 
 * @returns 
 */
export function arraybuffer2Base64(data: ArrayBuffer | string, type: string) {
  const blob = new Blob([data], { type: type }); //类型一定要写！！！
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(blob);
    reader.onload = () => resolve(reader.result);
    reader.onerror = (error) => reject(error);
  })
}


// /**
//  * arraybuffer 转为 bolb
//  * @param arraybuffer
//  * @param type
//  * @param filename
//  * @returns
//  */
// function arraybuffer2Bolb(arraybuffer: ArrayBuffer, type: string, filename: string) {
//   // 创建blob对象，解析流数据
//   const blob = new Blob([arraybuffer], {
//     // 如何后端没返回下载文件类型，则需要手动设置：type: 'application/pdf;chartset=UTF-8' 表示下载文档为pdf，如果是word则设置为		  msword，excel为excel
//     type: type
//   });
//   const a = document.createElement("a");
//   // 兼容webkix浏览器，处理webkit浏览器中href自动添加blob前缀，默认在浏览器打开而不是下载
//   const URL = window.URL || window.webkitURL;
//   // 根据解析后的blob对象创建URL 对象
//   const herf = URL.createObjectURL(blob);
//   return herf
// }